import Vue from 'vue'
import Vuex from 'vuex'
import storage from '../utils/storage'

Vue.use(Vuex);
// 用Vuex.Store对象用来记录token
const store = new Vuex.Store({
    //这里放全局参数
    state: {
        // token
        token: storage.get('token') ? storage.get('token') : '',
        //用户名
        userName: storage.get('userName') ? storage.get('userName') : '',
        // 搜索输入历史
        historyList: storage.get('historyList') ? storage.get('historyList') : [],
        // 系统标题
        systemTitle:'矿机整机维修指导系统'
    },

    // 计算属性，这里放set方法
    mutations: {
        // 修改token，并将token存入localStorage
        set_token(state, token) {
            state.token = token;
            storage.set('token', token);
            console.log('store、localstorage保存token成功！');
        },

        // 清除token
        del_token(state) {
            state.token = "";
            storage.remove("token");
        },

        // 保存用户信息
        setUserInfo(state, userName) {
            state.userName = userName;
            storage.set('userName', userName);
        },

        // 保存输入框输入历史
        setInputHistory(state, historyList) {
            state.historyList = historyList
            storage.set('historyList', historyList)
        },

        // 设备系统标题
        setSystemTitle(state,title) {
            state.systemTitle = title
        }
    },

    // 这里放get方法 
    getters: {
        get_token(state) {
            return state.token || storage.get("token") || null;
        }
    },

    // 给全局变量分组，所以需要写提前声明其他store文件，然后引入这里
    actions: {
        // 退出系统
        LogOut({ commit,state }) {
            return new Promise((resolve,reject) => {
                commit('del_token')
                resolve()
            }).catch(error => {
                reject(error)
            })
        }
    }
});

export default store;